import java.util.*;

//二分+指针
//3648(模板题）全部都有的子序列
public class code {
    public static void main(String[] args) {
        //输入
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        int[] arr = new int[n];
        Set<Integer> set = new HashSet<>();
        for(int i=0;i<n;i++) {
            arr[i] = scan.nextInt();
            set.add(arr[i]);
        }
        int m = set.size();//集合得到不同元素个数
        //分区(二分)
        int l=1,r=n;//?这里的l和r代表长度
        while(l<r) {
            int mid = (l+r)/2;
            if(check(mid,arr,m)) r=mid;
            else l =mid+1;
        }
        //输出
        System.out.print(l);
    }
    public static boolean check(int mid,int[]arr,int m) {
        int n = arr.length;
        int[] f = new int [1001];
        int fast=0,slow=0,ans=0;//快慢指针，元素出现个数
        while(fast<n) {
            f[arr[fast]]++;
            if(f[arr[fast]]==1) {
                ans++;
            }
            if(fast-slow+1>mid) {
                f[arr[slow]]--;
                if(f[arr[slow]]==0)
                    ans--;
                slow++;
            }
            fast++;
            if(ans>=m)
                return true;
        }
        return false;

    }
}

